#include <iostream>
using namespace std;

// 1.设计模式是由设计原则演变而来的
// 2.符合设计原则的代码，只需要更改少量的代码就能够演变为设计模式

// 接口隔离原则： 类的封装，通过show一个函数来调用所有的函数。类与类直接通过接口关联
// 最小知道原则： 用户只知道show函数和构造函数
// 破坏的原则：
// 单一职责原则：
// 开闭原则（对拓展开发，对修改关闭）：可以随意修改
// 拓展的方式：继承，多态组合（在类中定义另一个基类的指针，通过这个指针来调用另一个基类的派生类的函数）
class zooShow
{
public:
    zooShow(int type = 1) : _type(type) {}

public:
    void show()
    {
        //里氏替换原则 - 在任何时候可以使用父类的情况下，使用子类也能完成这个功能
        //比如这里的show0，子类重写show0时候一定要满足playGame这个特殊情况
        if (show0())
            playGame();
        show1();
        show2();
        show3();
    }

private:
    void playGame() {}

protected:
    bool show0() {}
    bool show1() {}
    bool show2() {}
    bool show3() {}

private:
    int _type;
};

int main()
{
    return 0;
}